【アップデート】Amazon Auroraでスロークエリや一般ログがCloudWatch Logsへ出力可能に
大栗です。
先程Amazon Auroraのスロークエリログ、一般ログ、エラーログをCloudWatch Logsへ出力可能になりました。内容についてレポートします。
Announcement: Amazon Aurora Publishes General, Slow Query and Error Logs to Amazon CloudWatch
CloudWatch Logsへのログファイル出力
MySQL互換Auroraでは、以下のログを出力しています。
- 監査ログ
- エラーログ
- 一般ログ
- スロークエリログ
この中で監査ログは先行してCloudWatch Logsへ出力可能になっていました。またMySQLやMariaDBでは上記ログをCloudWatch Logsへ出力可能になっていたため、Auroraでも待望されていた機能でした。
CloudWatch Logsのロググループ名は、監査ログと同様に以下の形式です。ログストリーム名はインスタンスIDとなっています。
/aws/rds/cluster/<クラスタ名>/<ログ名>
各種ログをCloudWatch Logsへ出力するためにはlog_output
でFILE
を設定する必要があるのでご注意下さい。またCloudWatch Logsへの出力はService Linked Roleを使用するので、細かい権限の調整は不要です。
やってみる
今回は以下の前提で検証します。
- リージョン:東京
- Auroraバージョン:2.02
- インスタンスクラス:db.t2.small
MySQL 5.6互換(バージョン1系)とMySQL 5.7互換(バージョン2系)の両方でログ出力が可能ですが、今回はMySQL 5.7互換で試します。
パラメータグループの作成
まずDBパラメータグループを作成します。
RDSのコンソールでパラメータグループの作成
をクリックします。
以下の内容で作成
をクリックします。
パラメータ | 設定値 | 備考 |
---|---|---|
パラメータグループファミリー | aurora-mysql5.7 | MySQL 5.7互換が前提のため |
タイプ | DB Parameter Group | |
グループ名 | <任意> | |
説明 | <任意> |
監査ログの設定を行うためにDBクラスタパラメータグループも作成します。
以下の内容で作成
をクリックします。
パラメータ | 設定値 | 備考 |
---|---|---|
パラメータグループファミリー | aurora-mysql5.7 | MySQL 5.7互換が前提のため |
タイプ | DB Cluster Parameter Group | |
グループ名 | <任意> | |
説明 | <任意> |
作成したDBパラメータグループの内容を設定していきます。
DBパラメータグループでは以下のパラメータを編集します。
パラメータ | 設定値 | 備考 |
---|---|---|
general_log | 1 | 一般ログを有効にする |
slow_query_log | 1 | スロークエリログを有効にする |
long_query_time | 0 | スロークエリの閾値 |
log_output | FILE | デフォルトでFILE になっている |
DBクラスタパラメータグループでは以下のパラメータを編集します。今回はクエリ情報を全ユーザで出力します。
パラメータ | 設定値 | 備考 |
---|---|---|
server_audit_logging | 1 | 監査ログを有効にする |
server_audit_events | QUERY | 監査する対象のイベント |
server_audit_excl_users | <無し> | 監査対象外とするユーザ |
server_audit_incl_users | <無し> | 監査対象とするユーザ |
Auroraの起動
Auroraを起動します。
AuroraはMySQL 5.7互換を選択します。(MySQL 5.6互換でも出力可能です)
移行は今までと同様にAuroraを構築します。
[詳細設定] の設定
の内容に注意して下さい。
データベースの設定
のDB パラメータグループ
とDB クラスターのパラメータグループ
で先程設定したものを指定します。
ログのエクスポート
でCloudWatch Logsへ出力するログを選択します。ここでは全て選択しています。
以降は普通に設定して起動します。
ログを確認する
CloudWatch Logsを確認します。
以下のロググループ名、ログストリーム名で出力されます。
ログ種別 | ロググループ名 | ログストリーム名 |
---|---|---|
監査ログ | /aws/rds/cluster/<クラスタ名>/audit | <DBインスタンス名>.audit.log..YYYY-MM-DD-HH-MI.0. |
エラーログ | /aws/rds/cluster/<クラスタ名>/error | <DBインスタンス名> |
一般ログ | /aws/rds/cluster/<クラスタ名>/general | <DBインスタンス名> |
スロークエリログ | /aws/rds/cluster/<クラスタ名>/slowquery | <DBインスタンス名> |
各々のログは以下のように出力されます。
監査ログ
エラーログ
一般ログ
スロークエリログ
さいごに
監査ログや一般ログを有効にすることは多くないと思いますが、スロークエリログは障害調査などでよく使用すると思います。CloudWath Logsに出力できるとほぼリアルタイムに出力でき、時刻で検索できるので調査に役立つので基本的に有効化しておきましょう。